#pragma once
#include "Object.h"
DEFINE_TYPE_ID(Object, 1)
DEFINE_TYPE_ID(Component, 2)
DEFINE_TYPE_ID(Transform, 3)
DEFINE_TYPE_ID(Component2D, 4)
DEFINE_TYPE_ID(GameObject, 5)
DEFINE_TYPE_ID(ScriptObject, 6)
DEFINE_TYPE_ID(ImageSprite, 7)
DEFINE_TYPE_ID(ImageSprite9, 8)
DEFINE_TYPE_ID(InputControl, 9)
DEFINE_TYPE_ID(Camera, 10)
DEFINE_TYPE_ID(ParticleEmitter, 11)
DEFINE_TYPE_ID(GeometryRenderer, 12)
DEFINE_TYPE_ID(ImageSpriteRenderer, 13)
DEFINE_TYPE_ID(Label, 14)
DEFINE_TYPE_ID(Page, 15)
DEFINE_TYPE_ID(MeshRenderer, 16)
DEFINE_TYPE_ID(NormalRenderer, 17)
DEFINE_TYPE_ID(Mesh, 18)
DEFINE_TYPE_ID(AudioListener, 20)
DEFINE_TYPE_ID(AudioSource, 21)
DEFINE_TYPE_ID(AudioClip, 22)
DEFINE_TYPE_ID(PhysicsComponent, 23)
DEFINE_TYPE_ID(Physics2DComponent, 24)
DEFINE_TYPE_ID(CustomComponent, 25)
DEFINE_TYPE_ID(Avatar, 26)
DEFINE_TYPE_ID(Model, 27)
DEFINE_TYPE_ID(Physics2DCircle, 28)
DEFINE_TYPE_ID(Physics2DBox, 29)
DEFINE_TYPE_ID(Physics2DChain, 30)
DEFINE_TYPE_ID(Physics2DEdge, 31)

DEFINE_TYPE_ID(AudioStream, 34)
DEFINE_TYPE_ID(RenderOrder, 37)
DEFINE_TYPE_ID(Shader, 38)
DEFINE_TYPE_ID(RenderPass, 39)
DEFINE_TYPE_ID(Material, 40)
DEFINE_TYPE_ID(Texture2D, 41)
DEFINE_TYPE_ID(FBO, 42)
DEFINE_TYPE_ID(Light, 43)
DEFINE_TYPE_ID(TextureCube, 44)

DEFINE_TYPE_ID(Resource, 50)
DEFINE_TYPE_ID(Data, 51)
DEFINE_TYPE_ID(AudioResource, 52)
DEFINE_TYPE_ID(TextureResource, 53)
DEFINE_TYPE_ID(MaterialResource, 54)
DEFINE_TYPE_ID(ImageResource, 55)
DEFINE_TYPE_ID(BinaryBuffer, 56)
DEFINE_TYPE_ID(Socket, 57)
DEFINE_TYPE_ID(RemoteAudio, 58)
DEFINE_TYPE_ID(VideoResource, 59)
DEFINE_TYPE_ID(MediaResource, 60)
DEFINE_TYPE_ID(DynamicFont, 61)

DEFINE_TYPE_ID(Profiler, 70)
DEFINE_TYPE_ID(Timer, 71)

DEFINE_TYPE_ID(Matrix3x3, 80)
DEFINE_TYPE_ID(Matrix4x4, 81)

DEFINE_TYPE_ID(HttpCurl, 101)
DEFINE_TYPE_ID(DownloadModule, 102)
DEFINE_TYPE_ID(WWW, 103)
DEFINE_TYPE_ID(AsyncCommand, 104)
DEFINE_TYPE_ID(Ray, 120)
DEFINE_TYPE_ID(Physics3DComponent, 121)
DEFINE_TYPE_ID(Physics3DConvexMesh, 122)
DEFINE_TYPE_ID(Physics3DCube, 123)
DEFINE_TYPE_ID(Physics3DSphere, 124)
DEFINE_TYPE_ID(Physics3DCapsule, 125)
DEFINE_TYPE_ID(Physics3DTriangleMesh, 126)
DEFINE_TYPE_ID(Physics3DHeightField, 127)
DEFINE_TYPE_ID(SceneManager, 150)
DEFINE_TYPE_ID(Terrain, 151)
DEFINE_TYPE_ID(TerrainTile, 152)


DEFINE_TYPE_ID(Sprite2D, 200)
DEFINE_TYPE_ID(Sprite2D9, 201)
DEFINE_TYPE_ID(Canvas, 202)
DEFINE_TYPE_ID(ClipArea2D, 203)

//builtin logic component
DEFINE_TYPE_ID(Button,1000)